home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB GET.MONITOR (Monitor%)
-
- ' Memory resident QB help program Alt-X activates
- ' by Kauko J. Laurinolli Apr. 2, 1988 404-981-9550
- ' Assembly Subroutines : Mach2 V2.00 and Stayres Plus from Micro-Help
- ' Screens generated with: OSG V1.05 from Inventories Unlimited
- ' Compiled with QB4
- ' BC qbhelp.asc/o;
- ' LINK stayqb4+qbhelp+nocom+dispscr2,,nul,qbhelp.lib+mhlib2+bcom40 /E;
-
- DEFINT A-Z
-
- CALL GET.MONITOR(Last.Monitor) 'get monitor type
-
- Scr.Buffer$ = SPACE$(16404) 'space for screen image
- Kshift = VARPTR(Scr.Buffer$) 'get segment address
- CALL Stayres(3, Kscan, Kshift, Ecode) 'initiate
-
- Kscan = 16 * 1024 'screen buffer inside basic
- CALL Stayres(4, Kscan, Kshift, Ecode)
-
- Kscan = 45: Kshift = 8: Oper = 0 'kscan = hotkey
- CALL Mhscr("Programmers Help Loaded, use Alt-X to Activate", 0, CSRLIN, 1, 15)
-
- HOT.KEY:
- CALL Stayres(Oper, Kscan, Kshift, Ecode) 'go to sleep
-
- CALL GET.MONITOR(Monitor) 'check monitor type
-
- IF Last.Monitor <> Monitor THEN 'change video mode
- CALL Stayres(2, Kscan, Kshift, Ecode)
- Last.Monitor = Monitor
- END IF
-
- CALL Colr 'show main screen
- CALL Ascii1 'show 1st ascii table
- Curr.Key = 1: Mss$ = SPACE$(10)
-
- CALL Mhscr(" Programmers Help by K. Laurinolli <Esc> <Esc> to Quit PgUp PgDn ", 0, 25, 1, 78)
- Old.Scan = 0 'clear old.scan
-
- DO
- Shft = 0
- CALL MhKclr(&H1600, 0, 1, 1, Shift, Scan, Ascii) 'get curr.key
-
- IF (Shift AND 1) = 1 THEN Shft = Shft + 1
- IF (Shift AND 2) = 2 THEN Shft = Shft + 2
- IF (Shift AND 4) = 4 THEN Shft = Shft + 4
- IF (Shift AND 8) = 8 THEN Shft = Shft + 8
-
- FOR col = 13 TO 46 STEP 11
- CALL Mhscr(Mss$, 0, 22, col, 51) 'clear fields
- CALL Mhscr(Mss$, 0, 23, col, 51)
- NEXT
-
- CALL Mhscr(CHR$(Ascii), 0, 22, 17, 63) 'char
-
- CALL Mhscr(STR$(Ascii), 0, 22, 28, 63) 'ascii
- CALL Mhscr(HEX$(Ascii), 0, 23, 29, 63)
-
- CALL Mhscr(STR$(Shft), 0, 22, 39, 63) 'shift
- CALL Mhscr(HEX$(Shft), 0, 23, 40, 63)
-
- CALL Mhscr(STR$(Scan), 0, 22, 49, 63) 'scan
- CALL Mhscr(HEX$(Scan), 0, 23, 50, 63)
-
- IF Ascii = 27 AND Shft = 4 AND Scan = 1 THEN 'leave program, REM this when finished programming
- Oper = 9
- EXIT DO
- END IF
-
- IF Old.Scan = Scan AND Scan = 1 THEN 'go back to sleep after <Esc><Esc>
- EXIT DO
- END IF
-
- IF Scan = 80 OR Scan = 81 OR Scan = 72 OR Scan = 73 THEN 'page ascii tables
- IF Scan = 80 OR Scan = 81 THEN 'page forward
- IF Curr.Key < 6 THEN
- Curr.Key = Curr.Key + 1
- ELSE
- Curr.Key = 1
- END IF
- END IF
-
- IF Scan = 72 OR Scan = 73 THEN 'page backward
- IF Curr.Key > 1 THEN
- Curr.Key = Curr.Key - 1
- ELSE
- Curr.Key = 6
- END IF
- END IF
-
- IF Curr.Key = 1 THEN CALL Ascii1 'show different ascii tables
- IF Curr.Key = 2 THEN CALL ascii2
- IF Curr.Key = 3 THEN CALL ascii3
- IF Curr.Key = 4 THEN CALL ascii4
- IF Curr.Key = 5 THEN CALL ascii5
- IF Curr.Key = 6 THEN CALL ascii6
- END IF
-
- Old.Scan = Scan 'set old keyscan
- LOOP
-
- GOTO HOT.KEY 'back to start
-
- END
-
- SUB GET.MONITOR (Monitor) STATIC
-
- CALL mhdisplay(mode, columns, rows, memory, display.type)
-
- IF (display.type AND 128) = 128 THEN
- Monitor = &HB800 '&hB800 for color &hFFFF for no snow-check
- ELSE
- Monitor = &HB000 'mono
- END IF
-
- CALL mhvideo(Monitor)
- IF Monitor = &HB800 THEN CALL mhvideo(&HFFFF) 'turn off snow checking on color monitors
-
- END SUB 'get.monitor mono / color
-
-